import request from './request'

// 课程相关API
export const courseApi = {
  // 获取所有课程
  getAllCourses() {
    return request({
      url: '/api/courses',
      method: 'get'
    })
  },
  
  // 根据ID获取课程
  getCourseById(id) {
    return request({
      url: `/api/courses/${id}`,
      method: 'get'
    })
  },
  
  // 创建课程
  createCourse(data) {
    return request({
      url: '/api/courses',
      method: 'post',
      data
    })
  },
  
  // 更新课程
  updateCourse(id, data) {
    return request({
      url: `/api/courses/${id}`,
      method: 'put',
      data
    })
  },
  
  // 删除课程
  deleteCourse(id) {
    return request({
      url: `/api/courses/${id}`,
      method: 'delete'
    })
  },

  // 课程批量导入
  importCourses(file) {
    const formData = new FormData()
    formData.append('file', file)
    return request({
      url: '/api/courses/import',
      method: 'post',
      data: formData,
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    })
  },

  // 下载课程导入模板
  downloadCourseTemplate() {
    return request({
      url: '/api/courses/import/template',
      method: 'get',
      responseType: 'blob'
    })
  }
}

// 班级相关API
export const classApi = {
  // 获取所有班级
  getAllClasses() {
    return request({
      url: '/api/classes',
      method: 'get'
    })
  },
  
  // 根据ID获取班级
  getClassById(id) {
    return request({
      url: `/api/classes/${id}`,
      method: 'get'
    })
  },
  
  // 创建班级
  createClass(data) {
    return request({
      url: '/api/classes',
      method: 'post',
      data
    })
  },
  
  // 更新班级
  updateClass(id, data) {
    return request({
      url: `/api/classes/${id}`,
      method: 'put',
      data
    })
  },
  
  // 删除班级
  deleteClass(id) {
    return request({
      url: `/api/classes/${id}`,
      method: 'delete'
    })
  },
  
  // 更新班级状态
  updateClassStatus(id, statusData) {
    return request({
      url: `/api/classes/${id}/status`,
      method: 'put',
      data: statusData
    }).then(response => {
      return response;
    }).catch(error => {
      throw error;
    });
  }
}

// 部门相关API
export const departmentApi = {
  // 获取所有部门
  getAllDepartments() {
    return request({
      url: '/api/departments',
      method: 'get'
    })
  },
  
  // 获取所有教研室
  getResearchOffices() {
    return request({
      url: '/api/departments/research-offices',
      method: 'get'
    })
  },
  
  // 根据ID获取部门
  getDepartmentById(id) {
    return request({
      url: `/api/departments/${id}`,
      method: 'get'
    })
  },
  
  // 创建部门
  createDepartment(data) {
    return request({
      url: '/api/departments',
      method: 'post',
      data
    })
  },
  
  // 更新部门
  updateDepartment(id, data) {
    return request({
      url: `/api/departments/${id}`,
      method: 'put',
      data
    })
  },
  
  // 删除部门
  deleteDepartment(id) {
    return request({
      url: `/api/departments/${id}`,
      method: 'delete'
    })
  },
  
  // 获取所有部门类型
  getAllDepartmentTypes() {
    return request({
      url: '/api/department-types',
      method: 'get'
    })
  }
}

// 专业相关API
export const majorApi = {
  // 获取所有专业
  getAllMajors() {
    return request({
      url: '/api/majors',
      method: 'get'
    })
  },
  
  // 根据ID获取专业
  getMajorById(id) {
    return request({
      url: `/api/majors/${id}`,
      method: 'get'
    })
  },
  
  // 创建专业
  createMajor(data) {
    return request({
      url: '/api/majors',
      method: 'post',
      data
    })
  },
  
  // 更新专业
  updateMajor(id, data) {
    return request({
      url: `/api/majors/${id}`,
      method: 'put',
      data
    })
  },
  
  // 删除专业
  deleteMajor(id) {
    return request({
      url: `/api/majors/${id}`,
      method: 'delete'
    })
  }
}

// 学期相关API
export const termApi = {
  // 获取所有学期
  getAllTerms() {
    return request({
      url: '/api/terms',
      method: 'get'
    })
  },
  
  // 获取当前学期
  getCurrentTerm() {
    return request({
      url: '/api/terms/current',
      method: 'get'
    })
  },
  
  // 根据ID获取学期
  getTermById(id) {
    return request({
      url: `/api/terms/${id}`,
      method: 'get'
    })
  },
  
  // 创建学期
  createTerm(data) {
    return request({
      url: '/api/terms',
      method: 'post',
      data
    })
  },
  
  // 更新学期
  updateTerm(id, data) {
    return request({
      url: `/api/terms/${id}`,
      method: 'put',
      data
    })
  },
  
  // 删除学期
  deleteTerm(id) {
    return request({
      url: `/api/terms/${id}`,
      method: 'delete'
    })
  },
  
  // 设置当前学期
  setCurrentTerm(id) {
    return request({
      url: `/api/terms/${id}/current`,
      method: 'patch'
    })
  }
}

// 角色相关API
export const roleApi = {
  // 获取所有角色
  getAllRoles() {
    return request({
      url: '/api/roles',
      method: 'get'
    })
  },
  
  // 根据ID获取角色
  getRoleById(id) {
    return request({
      url: `/api/roles/${id}`,
      method: 'get'
    })
  },
  
  // 创建角色
  createRole(data) {
    return request({
      url: '/api/roles',
      method: 'post',
      data
    })
  },
  
  // 更新角色
  updateRole(id, data) {
    return request({
      url: `/api/roles/${id}`,
      method: 'put',
      data
    })
  },
  
  // 删除角色
  deleteRole(id) {
    return request({
      url: `/api/roles/${id}`,
      method: 'delete'
    })
  }
}

// 培养层次相关API
export const cengCiApi = {
  // 获取所有培养层次
  getAllCengCi() {
    return request({
      url: '/api/cengci',
      method: 'get'
    })
  },
  
  // 获取所有培养层次（别名方法，兼容已有代码）
  getAllCengCis() {
    return request({
      url: '/api/cengci',
      method: 'get'
    })
  },
  
  // 根据ID获取培养层次
  getCengCiById(id) {
    return request({
      url: `/api/cengci/${id}`,
      method: 'get'
    })
  },
  
  // 创建培养层次
  createCengCi(data) {
    return request({
      url: '/api/cengci',
      method: 'post',
      data
    })
  },
  
  // 更新培养层次
  updateCengCi(id, data) {
    return request({
      url: `/api/cengci/${id}`,
      method: 'put',
      data
    })
  },
  
  // 删除培养层次
  deleteCengCi(id) {
    return request({
      url: `/api/cengci/${id}`,
      method: 'delete'
    })
  }
}

// 课程类型相关API
export const courseTypeApi = {
  // 获取所有课程类型
  getAllCourseTypes() {
    return request({
      url: '/api/course-types',
      method: 'get'
    })
  }
}

// 考试类型相关API
export const examineTypeApi = {
  // 获取所有考试类型
  getAllExamineTypes() {
    return request({
      url: '/api/examine-types',
      method: 'get'
    })
  }
}

// 状态相关API
export const statusApi = {
  // 获取所有状态
  getAllStatuses() {
    return request({
      url: '/api/statuses',
      method: 'get'
    })
  }
}

// 班次状态相关API
export const classStatusApi = {
  // 获取所有班次状态
  getAllClassStatuses() {
    return request({
      url: '/api/class-statuses',
      method: 'get'
    })
  }
}

// 教学任务相关API
export const teachingMissionApi = {
  // 获取所有教学任务
  getAllTeachingMissions() {
    return request({
      url: '/api/teaching-missions',
      method: 'get'
    })
  },
  
  // 根据ID获取教学任务
  getTeachingMissionById(id) {
    return request({
      url: `/api/teaching-missions/${id}`,
      method: 'get'
    })
  },
  
  // 根据教师ID获取教学任务
  getTeachingMissionsByTeacherId(teacherId) {
    return request({
      url: `/api/teaching-missions/teacher/${teacherId}`,
      method: 'get'
    })
  },
  
  // 创建教学任务
  createTeachingMission(data) {
    return request({
      url: '/api/teaching-missions',
      method: 'post',
      data
    })
  },
  
  // 更新教学任务
  updateTeachingMission(id, data) {
    return request({
      url: `/api/teaching-missions/${id}`,
      method: 'put',
      data
    })
  },
  
  // 删除教学任务
  deleteTeachingMission(id) {
    return request({
      url: `/api/teaching-missions/${id}`,
      method: 'delete'
    })
  }
}

// 学生状态相关API
export const studentStatusApi = {
  // 获取所有学生状态
  getAllStudentStatuses() {
    return request({
      url: '/api/student-statuses',
      method: 'get'
    })
  }
}

// 成绩类型相关API
export const scoreTypeApi = {
  // 获取所有成绩类型
  getAllScoreTypes() {
    return request({
      url: '/api/score-types',
      method: 'get'
    })
  }
}

// 导出的便捷方法
export function getCourses() {
  return courseApi.getAllCourses();
}

export function getTerms() {
  return termApi.getAllTerms();
}

export function getCurrentTerm() {
  return termApi.getCurrentTerm();
}

export function getClasses() {
  return classApi.getAllClasses();
}

export function getMajors() {
  return majorApi.getAllMajors();
}

// 课程导入相关导出
export function downloadCourseTemplate() {
  return courseApi.downloadCourseTemplate();
}

export function importCourses(file) {
  return courseApi.importCourses(file);
}
